package xim

import (
	"gitee.com/xiaoyutab/xgotool/optional/xcache"
	"gitee.com/xiaoyutab/xgotool/optional/xlog"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 获取聊天/群详情
//
//	id	聊天/群ID
func GetChat(id uint64) (*Chat, error) {
	if id == 0 {
		return nil, xerror.New("聊天群未找到")
	}
	cache_key := xcache.Key("xim.get.chat", id)
	inf := Chat{}
	// 读取缓存
	if xcache.Exists(cache_key) {
		if err := xcache.GetStruct(cache_key, &inf); err == nil {
			if inf.Id == 0 {
				return nil, xerror.New("聊天群未找到")
			}
			return &inf, nil
		}
	}
	if _default.DB == nil {
		return nil, xerror.New("数据库未连接")
	}
	// 读取数据库
	err := _default.DB.Table(_default.ChatTable).Where("id", id).Where("is_deleted", 0).Find(&inf).Error
	if err != nil {
		return nil, xlog.AE("聊天群信息检索失败", err)
	}
	// 写入缓存
	xcache.SetStruct(cache_key, inf)
	if inf.Id == 0 {
		return nil, xerror.New("聊天群未找到")
	}
	return &inf, nil
}
